package cvo.pro4.chess.client.entities.pieces;


import java.util.ArrayList;
import java.util.List;

import cvo.pro4.chess.client.entities.BoardCoordinates;
import cvo.pro4.chess.client.entities.Color;
import cvo.pro4.chess.client.entities.Game;
import cvo.pro4.chess.client.entities.Piece;
import cvo.pro4.chess.client.exceptions.IllegalCoordinatesException;

public class Knight extends Piece{
	public Knight(Color color){
		 super(color);
		 setName("Knight");
		}

	@Override
	public void move(BoardCoordinates coordinates) {
		// TODO Auto-generated method stub
	}
	/*getPossibleMoves van Knight
	 * kijkt welke coordinaten er vanuit zijn positie mogelijk zijn.
	 * coordinaten buiten het bord worden geweerd
	 * coordinaten waar al een andere piece opstaat van zijn kleur worden geweerd
	 * coordinaten waardoor de koning schaak staat, worden geweerd
	 */
	
	public List<BoardCoordinates> getPossibleMoves() throws IllegalCoordinatesException {
		List<BoardCoordinates> possibleMoves = new ArrayList<BoardCoordinates>();
		
		BoardCoordinates currentPosition = this.getCurrentPosition();
		BoardCoordinates possiblePosition = null;
	
		for (int i=-2;i<3;i++){
			//kring moet i=0 skippen
			if(i!=0){
				int j=0;
				
				if(Math.abs(i)==2){
					j=1;
				}else{
					j=2;			
				}
				for(int k=0;k<2;k++){
					j=-j;
					
					//eerste controle: bestaat de coordinaat?
					System.out.println("tadaa");
					try {
						possiblePosition = BoardCoordinates.create(currentPosition.getX()+i, currentPosition.getY()+j);
						System.out.println("tadaa");
					
					
					
						if(Game.getGame().getBoard().getPieceAtLocation(possiblePosition)==null ||
								Game.getGame().getBoard().getPieceAtLocation(possiblePosition).getColor()!=this.getColor()){
							
							//TODO: King || Army || Board  moet methode isKingChecked(Color color) hebben die Boolean teruggeeft.
						//	if(!Game.getGame().getBoard().isKingChecked(this.getColor()){
									possibleMoves.add(possiblePosition);
						//	}
						
						}
					} catch (Exception e) {
					System.out.println(e.toString()+ possiblePosition.toString());
					}
				}
			}
		}
		return possibleMoves;
	}
}
